#include "symconst.h"
namespace cnst
{
  /// Constants
  symbol ep("ep","\epsilon");  
  symbol eps("eps","\epsilon_long");  
  symbol D("D","D");
  symbol C("C","C");
  /// MASSES
  /// Photon
  symbol m0("m0","m_{0}"); 
  /// Electron
  symbol me("me","m_{e}");
  /// b-quark
  symbol mb("mb","m_{b}");
  /// Z-boson
  symbol mZ("mZ","m_{Z}");
  /// Gauge(Z)-boson
  symbol mGZ("mGZ","m_{GZ}");
  /// Scalar phi4
  symbol mS("mS","m_{\\phi}");  
  ///Yukawa couplings
  symbol lB("lambdaB","\\lambda_{b}");
  
  /// Gauge fixing constants
 symbol xi("xi","\\xi"); 
 symbol xiZ("xiZ","\\xi_{z}");
  symbol xiW("xiW","\\xi_{w}");

  // Input impulses
  symbol p1("p1","p_1");
  symbol p2("p2","p_2");
  // Outgoing momentums
  symbol q1("q1","q_1");
  symbol q2("q2","q_2");
  // Loop momentums
  symbol k1("k1","k_1");
  symbol k2("k2","k_2");
  symbol k3("k3","k_3");
  symbol k4("k4","k_4");
  symbol k5("k5","k_5");
  symbol k6("k6","k_6");
  
  // Vertex Lorentz indexes
  varidx mu0(symbol("mu0"), 4-2*ep);
  varidx mu1(symbol("mu1"), 4-2*ep);
  varidx mu2(symbol("mu2"), 4-2*ep);
  varidx mu3(symbol("mu3"), 4-2*ep);
  varidx mu4(symbol("mu4"), 4-2*ep);
  varidx mu5(symbol("mu5"), 4-2*ep);
  varidx mu6(symbol("mu6"), 4-2*ep);
  varidx mu7(symbol("mu7"), 4-2*ep);
  varidx mu8(symbol("mu8"), 4-2*ep);
  varidx mu9(symbol("mu9"), 4-2*ep);
  varidx mu10(symbol("m10u"), 4-2*ep);
  varidx mu11(symbol("mu11"), 4-2*ep);
  varidx mu12(symbol("mu12"), 4-2*ep);
  varidx mu13(symbol("mu13"), 4-2*ep);
  varidx mu14(symbol("mu14"), 4-2*ep);
  varidx mu15(symbol("mu15"), 4-2*ep);
  varidx mu16(symbol("mu16"), 4-2*ep);
  varidx mu17(symbol("mu17"), 4-2*ep);
  varidx mu18(symbol("mu18"), 4-2*ep);
  
  
  // Scalar products
  symbol k1_p1("(k1.p1)");
  symbol k1_p2("(k1.p2)");
  symbol k1_q1("(k1.q1)");
  symbol k1_q2("(k1.q2)");
  symbol k2_p1("(k2.p1)");
  symbol k2_p2("(k2.p2)");
  symbol k2_q1("(k2.q1)");
  symbol k2_q2("(k2.q2)");
  symbol k3_p1("(k3.p1)");
  symbol k3_p2("(k3.p2)");
  symbol k3_q1("(k3.q1)");
  symbol k3_q2("(k3.q2)");
  symbol k4_p1("(k4.p1)");
  symbol k4_p2("(k4.p2)");
  symbol k4_q1("(k4.q1)");
  symbol k4_q2("(k4.q2)");
  symbol k5_p1("(k5.p1)");
  symbol k5_p2("(k5.p2)");
  symbol k5_q1("(k5.q1)");
  symbol k5_q2("(k5.q2)");
  symbol k6_p1("(k6.p1)");
  symbol k6_p2("(k6.p2)");
  symbol k6_q1("(k6.q1)");
  symbol k6_q2("(k6.q2)");
  
  
  symbol  k1_k1("(k1.k1)");
  symbol  k1_k2("(k1.k2)");
  symbol  k1_k3("(k1.k3)");
  symbol  k1_k4("(k1.k4)");
  symbol  k1_k5("(k1.k5)");
  symbol  k1_k6("(k1.k6)");
  symbol  k2_k2("(k2.k2)");
  symbol  k2_k3("(k2.k3)");
  symbol  k2_k4("(k2.k4)");
  symbol  k2_k5("(k2.k5)");
  symbol  k2_k6("(k2.k6)");
  symbol  k3_k3("(k3.k3)");
  symbol  k3_k4("(k3.k4)");
  symbol  k3_k5("(k3.k5)");
  symbol  k3_k6("(k3.k6)");
  symbol  k4_k4("(k4.k4)");
  symbol  k4_k5("(k4.k5)");
  symbol  k4_k6("(k4.k6)");
  symbol  k5_k5("(k5.k5)");
  symbol  k5_k6("(k5.k6)");
  symbol  k6_k6("(k6.k6)");
  
  symbol p1_p1("(p1.p1)");
  symbol p2_p2("(p2.p2)");
  symbol q1_q1("(q1.q1)");
  symbol q2_q2("(q2.q2)");
  symbol p1_q1("(p1.q1)");
  symbol p1_q2("(p1.q2)");
  symbol p2_q1("(p2.q1)");
  symbol p2_q2("(p2.q2)");



  symbol l1("l1"),l2("l2"),l3("l3"),l4("l4"),l5("l5"),l6("l6");
  const lst lm (l1,l2,l3,l4,l5,l6);
  /// list of global external momentums renamed to be all input 
  /// and (n-1) ,where n-number of vertices with external momentum
  symbol i1("i1"),i2("i2"),i3("i3"),i4("i4"),i5("i5"),i6("i6");
  const lst im (i1,i2,i3,i4,i5,i6);
  const lst km (k1,k2,k3,k4,k5,k6);
  // scalar products for reduze

  symbol  i1_i1("(i1.i1)");
  symbol  i1_i2("(i1.i2)");
  symbol  i1_i3("(i1.i3)");
  symbol  i1_i4("(i1.i4)");
  symbol  i1_i5("(i1.i5)");
  symbol  i1_i6("(i1.i6)");
  symbol  i2_i2("(i2.i2)");
  symbol  i2_i3("(i2.i3)");
  symbol  i2_i4("(i2.i4)");
  symbol  i2_i5("(i2.i5)");
  symbol  i2_i6("(i2.i6)");
  symbol  i3_i3("(i3.i3)");
  symbol  i3_i4("(i3.i4)");
  symbol  i3_i5("(i3.i5)");
  symbol  i3_i6("(i3.i6)");
  symbol  i4_i4("(i4.i4)");
  symbol  i4_i5("(i4.i5)");
  symbol  i4_i6("(i4.i6)");
  symbol  i5_i5("(i5.i5)");
  symbol  i5_i6("(i5.i6)");
  symbol  i6_i6("(i6.i6)");


  symbol k1_i1("(k1.i1)");
  symbol k1_i2("(k1.i2)");
  symbol k1_i3("(k1.i3)");
  symbol k1_i4("(k1.i4)");
  symbol k1_i5("(k1.i5)");
  symbol k1_i6("(k1.i6)");

  symbol k2_i1("(k2.i1)");
  symbol k2_i2("(k2.i2)");
  symbol k2_i3("(k2.i3)");
  symbol k2_i4("(k2.i4)");
  symbol k2_i5("(k2.i5)");
  symbol k2_i6("(k2.i6)");

  symbol k3_i1("(k3.i1)");
  symbol k3_i2("(k3.i2)");
  symbol k3_i3("(k3.i3)");
  symbol k3_i4("(k3.i4)");
  symbol k3_i5("(k3.i5)");
  symbol k3_i6("(k3.i6)");

  symbol k4_i1("(k4.i1)");
  symbol k4_i2("(k4.i2)");
  symbol k4_i3("(k4.i3)");
  symbol k4_i4("(k4.i4)");
  symbol k4_i5("(k4.i5)");
  symbol k4_i6("(k4.i6)");

  symbol k5_i1("(k5.i1)");
  symbol k5_i2("(k5.i2)");
  symbol k5_i3("(k5.i3)");
  symbol k5_i4("(k5.i4)");
  symbol k5_i5("(k5.i5)");
  symbol k5_i6("(k5.i6)");

  symbol k6_i1("(k6.i1)");
  symbol k6_i2("(k6.i2)");
  symbol k6_i3("(k6.i3)");
  symbol k6_i4("(k6.i4)");
  symbol k6_i5("(k6.i5)");
  symbol k6_i6("(k6.i6)");
  


}
varidx mu(unsigned int n)
{
  switch(n)
    {
    case 0:
      return cnst::mu0;
    case 1:
      return cnst::mu1;
    case 2:
      return cnst::mu2;
    case 3:
      return cnst::mu3;
    case 4:
      return cnst::mu4;
    case 5:
      return cnst::mu5;
    case 6:
      return cnst::mu6;
    case 7:
      return cnst::mu7;
    case 8:
      return cnst::mu8;
    case 9:
      return cnst::mu9;
    case 10:
      return cnst::mu10;
    case 11:
      return cnst::mu11;
    case 12:
      return cnst::mu12;
    case 13:
      return cnst::mu13;
    case 14:
      return cnst::mu14;
    case 15:
      return cnst::mu15;
    case 16:
      return cnst::mu16;
    case 17:
      return cnst::mu17;
    case 18:
      return cnst::mu18;
    }
}

